Conversation
6a1b5bb to
870f8ed
Compare
f278f98 to
bd0bff1
Compare
src/main/java/com/sofa/linkiving/domain/member/service/MemberCommandService.java
Show resolved
Hide resolved
src/main/java/com/sofa/linkiving/security/config/SecurityConfig.java
Outdated
Show resolved
Hide resolved
src/main/java/com/sofa/linkiving/security/auth/handler/OAuth2SuccessHandler.java
Outdated
Show resolved
Hide resolved
|
위 URL로 접속해서 OAuth2 로그인을 테스트해보니 다음과 같은 에러가 발생합니다: { OAuth2 경로가 PERMIT_URLS에 포함되어 있는데도 인증이 필요하다고 나오는데, 혹시 추가로 허용해야 할 경로가 있을까요? |
제 환경에서는 정상적으로 접근이 가능합니다. 혹시 아직도 접근이 안되실까요 ? |
|
제 생각에는 |
제안해 주신 부분 확인했습니다. 현재 리다이렉트 되는 경로( 또한 현재 주소는 개발 편의를 위한 임시 주소이며, 배포 시 실제 프론트 도메인으로 변경 예정입니다. |
제 의견이 잘못 전달되었습니다. 프론트의 redirection이 아닌 @minibr 이 디스코드 상에 공유해주신 사진을 보면, url이 서버쪽으로 redirection됩니다. 이 부분은 |
근데 해당 URL은 스프링 시큐리티가 내부적으로 가로채서 로그인 처리를 수행하는 특수한 URL이기 때문에 우리가 만든 컨트롤러에 도달하기 전에, |
src/main/java/com/sofa/linkiving/security/auth/handler/OAuth2SuccessHandler.java
Show resolved
Hide resolved
직접 테스트 해본결과 정상동작하는 것으로 확인되었습니다. 해당 이슈는 redis 연결에 실패해 발생한 오류로 보입니다. |
5f95258 to
25cbb26
Compare
25cbb26 to
9a558b9
Compare
📊 코드 커버리지 리포트
|


관련 이슈
작업 내용
Spring Security OAuth2 Client를 이용하여 Google 소셜 로그인 기능을 구현했습니다. 로그인 성공 시 JWT(Access/Refresh Token)를 발급하여 클라이언트에게 전달하는 로직이 포함되어 있습니다.
1. Security 설정 (
SecurityConfig)oauth2Login()설정을 활성화하여 소셜 로그인 필터 체인을 구성했습니다.UserInfoEndpoint,SuccessHandler,FailureHandler를 각각 커스텀 구현체로 등록했습니다.OAuth2Properties를 도입했습니다.2. 사용자 정보 동기화 (
CustomOAuth2UserService)GoogleOAuth2User레코드로 매핑합니다.MemberCommandService.createOrUpdate()를 호출하여, 신규 사용자는 회원가입 처리하고 기존 사용자는 정보를 갱신하도록 구현했습니다.3. 로그인 성공/실패 핸들링
OAuth2SuccessHandler):Cookie에 담아 클라이언트(프론트엔드)의 성공 페이지로 리다이렉트합니다.OAuth2FailureHandler):OAuth2AuthenticationException및 내부BusinessException을 포착합니다.AuthErrorCode를 파싱하여, 에러 코드와 함께 실패 페이지로 리다이렉트합니다.4. 에러 코드 정의 (
AuthErrorCode)5. JaCoCo 설정
중요 알림 (로컬 테스트 관련)
테스트 방법
http://localhost:8080/oauth2/authorization/google접속 -> 구글 로그인 ->http://localhost:3000/login/success...리다이렉트 확인H2 Console등에서 회원 정보(MEMBER테이블) 저장 여부 확인accessToken,refreshToken쿠키 생성 확인Postman등을 이용해Bearer <accessToken>헤더를 담아 인증 필요한 API 호출 ->200 OK확인실행 결과